
#ifndef _C_GRAPHICS_DEVICE_H_
#define _C_GRAPHICS_DEVICE_H_




/// <summary>
/// 颜色数据类型定义。如果设备的颜色位宽需要修改，修改下面三行即可。
/// </summary>

typedef unsigned short RGB565;      // 16位宽
typedef unsigned int   RGB888;      // 32位宽
#define COLOR_rgb565 1   // rgb565 或 rgb 888


#if (COLOR_rgb565 == 1)
typedef RGB565 COLOR_RGB;    // 16位宽
#else  
typedef RGB888 COLOR_RGB;      // 32位宽
#endif



//  下面三个函数由硬件实现。

/// <summary>
/// 画点函数
/// </summary>
/// <param name="x">x坐标</param>
/// <param name="y">y坐标</param>
/// <param name="color">点的颜色</param>
void graphics_draw_point(int x, int y, COLOR_RGB color);

/// <summary>
/// 区域填充函数
/// </summary>
/// <param name="left">填充区域的左侧x坐标</param>
/// <param name="top">填充区域顶部的y坐标</param>
/// <param name="w">填充区域的宽度</param>
/// <param name="h">填充区域的高度</param>
/// <param name="color">填充颜色</param>
void graphics_fill_area(int left, int top, int w, int h, COLOR_RGB color);

/// <summary>
/// 在left，top的位置，放置图片。
/// </summary>
/// <param name="left">绘制位置的x坐标</param>
/// <param name="top">绘制位置的y坐标</param>
/// <param name="w">图片的宽度</param>
/// <param name="h">图片的高度</param>
/// <param name="color">图片的像素数组，数组长度是w*h</param>
void graphics_draw_image(int left, int top, int w, int h, const COLOR_RGB* color);


/////   上面四个函数是下面所有绘图函数的基础             ///




/// 初始化绘图设备
void graphics_init(void);

//关闭绘图设备
void graphics_close(void);


//////////  下面是硬件输入相关函数。  如：鼠标或触摸，按键输入         //////////////////////////

/// <summary>
/// 判断屏幕是否按下
/// </summary>
/// <param name="px">按下的x坐标</param>
/// <param name="py">按下的y坐标</param>
/// <returns>1 按下；0 未按下</returns>
int GD_is_touched(int* px, int* py);

/// <summary>
/// 等待按键输入，返回按键值。如果没有输入，就返回0.
/// 如果是单片机上，增加一个条件：如果3秒没有按下，就返回0.
/// </summary>
/// <returns></returns>
int GD_wait_key_input(void);

#endif
